import { ButtonProps } from "ant-design-vue/es/button/buttonTypes"
import { TooltipProps } from "ant-design-vue/es/tooltip/Tooltip"
import { RoleEnum } from "/@/enums/roleEnum"

export interface ActionItem extends ButtonProps {
  onClick?: Fn
  label?: string
  color?: "success" | "error" | "warning"
  icon?: string
  popConfirm?: PopConfirm
  disabled?: boolean
  divider?: boolean
  // 权限编码控制是否显示
  auth?: RoleEnum | RoleEnum[] | string | string[]
  // 业务控制是否显示
  ifShow?: boolean | ((action: ActionItem) => boolean)
  tooltip?: string | TooltipProps
  // 自定义类名
  class?: string | Record<string, boolean> | any[]
}

export interface PopConfirm {
  title: string
  okText?: string
  cancelText?: string
  confirm: Fn
  cancel?: Fn
  icon?: string
  // 卡片模式展示表格时, 会被强制设置成top
  placement?:
    | "top"
    | "left"
    | "right"
    | "bottom"
    | "topLeft"
    | "topRight"
    | "leftTop"
    | "leftBottom"
    | "rightTop"
    | "rightBottom"
    | "bottomLeft"
    | "bottomRight"
}
